package com.itheima.edu.info.manager.service;

import com.itheima.edu.info.manager.dao.BaseStudentDao;
import com.itheima.edu.info.manager.dao.OtherStudentDao;
import com.itheima.edu.info.manager.dao.StudentDao;
import com.itheima.edu.info.manager.domain.Student;
import com.itheima.edu.info.manager.factory.StudentDaoFactory;

public class StudentService {
    //创建对象,共同使用
    //private OtherStudentDao studentDao = new OtherStudentDao();
    private BaseStudentDao studentDao = StudentDaoFactory.getStudentDao();


    public boolean addStudent(Student student) {
        //将数据传入到studentDao层,调用方法并且给出返回值

        return studentDao.addSTtudent(student);
    }

    public boolean isExists(String id) {
        //1.调用studentDao层里面的方法,判断数组中的id和输入的id是否有相同的
        Student[] falg = studentDao.findAllStudent();
        //2.假设不存在
        boolean exists = false;
        //3.遍历数组,获取每一个学生对象.找到相同的id值,立马结束遍历循环
        for (int i = 0; i < falg.length; i++) {
            if(falg[i]!=null&&falg[i].getId().equals(id)){
                exists = true;
                break;
            }
        }
        //4.返回结果
        return exists;
    }

    public Student[] findAllStudent()  {
        //1.通过studentDao层里面的方法得到数组
        Student[] allStudent = studentDao.findAllStudent();
        //2.判断数组中有没有对象,实质上判断对象是不是null(有对象:返回地址值   没有对象:返回null)
        //思路:数组中只要存在一个数据,其他的可以都是null,就可以返回数组地址
        boolean falg = false;
        for (int i = 0; i < allStudent.length; i++) {
            Student stu = allStudent[i];
            //确保数组元素都没有null元素
            if(stu != null){
                falg = true;
                break;
            }
        }
        //3.有对象,返回数组名
        if(falg){
            return allStudent;
            //没对象,返回null
        }else{
            return null;
        }
    }

    public void deleteStudentByid(String id) {
        //将输入的id传到StudentDao类中
        studentDao.deleteStudentByid(id);
    }

    public void updateStudent(String updateId, Student newStu) {
        //将数据传到StudentDao层进行处理
        studentDao.updateDao(updateId,newStu);
    }
}
